home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / src890906.arc / KISS.C < prev    next >
C/C++ Source or Header  |  1989-08-12  |  1KB  |  72 lines

  1. #include "global.h"
  2. #include "mbuf.h"
  3. #include "iface.h"
  4. #include "kiss.h"
  5. #include "slip.h"
  6. #include "ax25.h"
  7.  
  8. /* Send raw data packet on KISS TNC */
  9. int
  10. kiss_raw(iface,data)
  11. struct iface *iface;
  12. struct mbuf *data;
  13. {
  14.     register struct mbuf *bp;
  15.  
  16.     /* Put type field for KISS TNC on front */
  17.     if((bp = pushdown(data,1)) == NULLBUF){
  18.         free_p(data);
  19.         return -1;
  20.     }
  21.     bp->data[0] = KISS_DATA;
  22.     slip_raw(iface,bp);
  23.     return 0;
  24. }
  25.  
  26. /* Process incoming KISS TNC frame */
  27. void
  28. kiss_recv(iface,bp)
  29. struct iface *iface;
  30. struct mbuf *bp;
  31. {
  32.     char kisstype;
  33.  
  34.     kisstype = pullchar(&bp);
  35.     switch(kisstype & 0xf){
  36.     case KISS_DATA:
  37.         ax_recv(iface,bp);
  38.         break;
  39.     default:
  40.         free_p(bp);
  41.         break;
  42.     }
  43. }
  44. /* Perform device control on KISS TNC by sending control messages */
  45. int
  46. kiss_ioctl(iface,argc,argv)
  47. struct iface *iface;
  48. int argc;
  49. char *argv[];
  50. {
  51.     struct mbuf *hbp;
  52.     int i;
  53.     char *cp;
  54.  
  55.     if(argc < 1){
  56.         printf("Data field missing\r\n");
  57.         return 1;
  58.     }
  59.     /* Allocate space for arg bytes */
  60.     if((hbp = alloc_mbuf((int16)argc)) == NULLBUF){
  61.         free_p(hbp);
  62.         return 0;
  63.     }
  64.     hbp->cnt = argc;
  65.     hbp->next = NULLBUF;
  66.     for(i=0,cp = hbp->data;i < argc;)
  67.         *cp++ = atoi(argv[i++]);
  68.  
  69.     slip_raw(iface,hbp);    /* Even more "raw" than kiss_raw */
  70.     return 0;
  71. }
  72.